﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 版权所有 (c) 2022 北京超维景生物科技有限公司 保留所有权利。
 * 
 * 创建者：huangyang
 * 电子邮箱：huangyang@tvscope.cn
 * 创建时间：2023/2/22 19:20:57
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ImageK.Util
{
    public static class NumberUtil
    {
        /** Returns whether a number is an integer */
        public static bool IsInteger(double x)
        {
            return x == (int)x;
        }

        public static float[] itof(int[] arr)
        {
            if (arr == null)
                return null;
            int n = arr.Length;
            float[] temp = new float[n];
            for (int i = 0; i < n; i++)
                temp[i] = arr[i];
            return temp;
        }

        /** Converts a float array to an int array using truncation. */
        public static int[] toInt(float[] arr)
        {
            return toInt(arr, null, arr.Length);
        }

        public static int[] toInt(float[] arr, int[] arr2, int size)
        {
            int n = arr.Length;
            if (size > n) size = n;
            int[] temp = arr2;
            if (temp == null || temp.Length < n)
                temp = new int[n];
            for (int i = 0; i < size; i++)
                temp[i] = (int)arr[i];
            return temp;
        }


        /** Converts a float array to an int array using rounding. */
        public static int[] toIntR(float[] arr)
        {
            int n = arr.Length;
            int[] temp = new int[n];
            for (int i = 0; i < n; i++)
                temp[i] = (int)Math.Floor(arr[i] + 0.5);
            return temp;
        }

        /** Converts an int array to a float array. */
        public static float[] toFloat(int[] arr)
        {
            int n = arr.Length;
            float[] temp = new float[n];
            for (int i = 0; i < n; i++)
                temp[i] = arr[i];
            return temp;
        }
    }
}
